Computing systems typically have numerous color devices (i.e., devices that display or produce color) such as, for example, printers, scanners, cameras, and displays. In order to manage the color rendering of the color devices, computing systems often implement subsystems or daemons to control one or more associated color devices. Examples of such subsystems include the Scanner Access Now Easy (SANE) subsystem which provides standardized access to any raster image scanner hardware (e.g., flatbed scanner, hand-held scanner), the X Window System subsystem which provides management of displays and monitors, and the UDev subsystem which provides management of devices such as web cameras and still cameras.
Another exemplary subsystem is CUPS (formerly an acronym for Common Unix Printing System) which provides print management functionality. CUPS performs various management tasks associated with color printers, such as converting information produced by an application into a format that a printer can understand and sending the information to the printer for printing. For example, with respect to color printers, CUPS is typically responsible for determining which color characterization profile is associated with a specific type of printer, with a specific paper type.
In operation, the CUPS subsystem may register a color printer with a color management module (e.g., a subsystem or daemon configured to manage, install, and generate color profiles to accurately color manage input and output devices) of the computing system in order to have the appropriate color characterization profile associated with the color printer. The registration for printers is done at the system level, wherein a color device is associated with a particular user during a particular session.
In current computing systems, the registration of the color device by subsystem is typically “permanent” in that the device remains registered until it is manually removed. This can result in the duplication of devices if the subsystem that registered the device is later reloaded. Moreover, the permanently registered devices should be explicitly cleared when the registering subsystem is started, otherwise all previously registered devices, including session devices, may remain registered. This can create a significant problem in computing environments wherein a user having associated color device characterization profiles is given a “seat” enabling the user to participate in a particular session. In such cases, the devices associated with those seats that are registered during a session may remain registered even after the seat has been removed.
An additional problem exists with respect to permanent color devices when the subsystem controlling the color device experiences a termination event such as for example, a forced quit, crash, unexpected exit, or a reload. In such cases, the previously registered color devices remain registered following the aforementioned termination events. This leads to duplicate device registrations when the color device management subsystem is restarted or reloaded.